#ifndef LISTA_H
#define LISTA_H

#include "nodo.h"
#include <QString>

template <typename T>
class Lista
{
    public:
        Lista();

        Lista<T> operator= (Lista<T> copy);

        bool Vacia();
        int Largo();

        void InsertarInicio(int v, T c);
        void InsertarFinal(int v, T c);
        void InsertarPos(int v, T c, int pos);

        void EliminarInicio();
        void EliminarFinal();
        void EliminarPos(int  pos);

        bool Valido(int v);
        bool Valido(T c);

        Nodo<T>* Buscar(int v);
        Nodo<T>* Buscar(T c);

        Nodo<T>* operator[] (int pos);

        T Index(int c);

        QString ToQString();

    private:
        Nodo<T>* Primero;
};

#endif // LISTA_H
